perm filename REVERB.OLD[M11,LCS] blob sn#411137 filedate 1979-01-18 generic text, type T, neo UTF8
      SUBROUTINE REVERB
	COMMON /LM/L(10),M(10),NSAMX
C CAN USE UP TO 10 FIELDS IN UNIT GEN.
      COMMON I(1) /P/P(1) /GENS/GENS(1) /LFUNC/LFUNC,XNFUN,PINCR
	1 /XIN/AMP,FREQ
	COMMON /INS/INS(1) /NT/RNT(1) /ROUT/ROUT(1)
C  INS=INSTRUMENT DEFINITIONS, RNT=NOTE CARD INFO, ROUT=OUTPUT BLOCK
      EQUIVALENCE (L1,L(1)),(L2,L(2)),(L3,L(3)),(L4,L(4)),(  
     2 L5,L(5)),(L6,L(6)),(L7,L(7)),(L8,L(8))
	3 ,(L9,L(9))
	DIMENSION DL(1200),D2(1050),D3(950),D4(850),D5(150),
	1 D6(50),D7(20)	,ND(7)
	DATA ND/0,1200,2250,3200,4000,4150,4200/
C THESE ARE THE POINTERS TO PARTS OF THE DELAY ARRAY.

C  FOLLOWING IS A TYPICAL MUS10 REVERB INST.
C	INSTRUMENT REV;
C      REV1(R,801,.827,D1);
C      REV1(R,901,.805,D2);
C      REV1(R,1011,.783,D3);
C      REV1(R,1123,.764,D4);
C      REV2(U1+U2+U3+U4,123,.7,D5);
C      REV2(U5,43,.7,D6);
C      REV2(U6,13,.7,D7);
C      R←0;OUTA←OUTA+U7;  END;
	JD=RNT(L6)
	IF(L5.LT.1000)GO TO 2
	J=(L5-1000)/100
	GO TO 1
C ABOVE FOR CONSTANTS IN REV.
2	J=RNT(L5)
1	J=ND(J)
C J=POINTER TO PROPER REVERB ARRAY (7 POSSIBLE POSITIONS)
	IF(L4.LT.1000)GO TO 4
	X=L4
	X=(X-1000.)/100.
	GO TO 3
4	X=RNT(L4)
C X=MULTIPLIER
3	IF(L3.LT.1000)GO TO 5
	LD=(L3-1000)/100
	GO TO 6
5	LD=RNT(L3)
C LD=DELAY, IN SMPLS
6	IF(JD.GE.LD)JD=0
	DO 213 K=0,NSAMX
	JD=JD+1
	JX=JD+J
	R=ROUT(L1+K)*X
	ROUT(L2+K)=DL(JX)
C GET OUTPUT FROM DELAY LOOP
	DL(JX)=R
C PUT CURRENT VALUE*GAIN INTO LOOP
	IF(JD.EQ.LD)JD=0
213	CONTINUE
	RNT(L6)=JD
	RETURN
	END